package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	_ "strconv"
	"strings"
	"time"
)

func main() {

	count := 63812122

	allstrs := make(map[string]string, count) //初始化数组
	path := "D:\\golang\\day3\\163.txt"       //  数据量太大 ，内存直接爆表了 来100万数据看看
	qqfile, _ := os.Open(path)                //打开文件
	defer qqfile.Close()                      // 延迟关闭

	bf := bufio.NewReader(qqfile) // 读取数据
	i := 0

	for {
		line, _, err := bf.ReadLine() //读取一样文件

		if err == io.EOF { //读取到文件的最后一样
			break
		}

		linestr := string(line) //转化成字符串
		arrStr := strings.Split(linestr, "----")

		if i == 10 {
			fmt.Println(linestr)
		}

		if len(arrStr) == 2 {
			// qqNum, _ := strconv.Atoi(arrStr[0])
			// allstrs[i].qqPass = arrStr[1]
			allstrs[arrStr[0]] = arrStr[1]

		}

		if i > 30000000 {
			break
		}

		i++
	}

	fmt.Println(i, "数据载入内存")

	// return

	time.Sleep(time.Second * 10)

	for {
		fmt.Println("请输入要查询的邮箱")
		var inputstr string
		fmt.Scanln(&inputstr)

		starttime := time.Now() //时间开始
		/** */
		qqPass, ok := allstrs[inputstr] //查询基本需要 3千万  0ms

		if ok {
			fmt.Println(inputstr, "==", qqPass)
		} else {
			fmt.Println("没找到数据")
		}

		fmt.Println("一共用了", time.Since(starttime))
	}

}
